var express = require('express');               //引用express框架
var path = require('path');                     //引用目录
var fs = require('fs');                         //引用FS模块
var sqlite3 = require('sqlite3').verbose();     //数据库连接
var router = express.Router();                  //路由
var dbpak=new sqlite3.Database('./pak/earth.pak');  //文件目录

function gettablename(x, y, z) {   //表名  参考官方文档PAK 地形影像紧凑存储
  if (z < 10) {                    //如果Z小于10，则是blocks表名
    return 'blocks'                //人如果大于10.则否则 表名 = “blocks_” + tostring(z) + “_” + tostring(x / 512) + “_” + tostring(y / 512)
  } else {
    tx = parseInt(x / 512);
    ty = parseInt(y / 512);
    return 'blocks_' + z + '_' + tx + '_' + ty;
  }
}

router.use('/cesiumlab/pak', function (req, res, next) {   //如果以/cesiumlab开头的请求
  let key = req.originalUrl.split('/');                    //hostname:ip/之后的url + 请求参数对
  let objkey = key[3];                                     //key[2]文件名key[3]为Z，key[4]为X，key[5]为Y
  let sqlstr = "select * from " + gettablename(key[5], key[6], key[4]) + ' where x=' + key[5] + " and " + ' y=' + key[6] + " and " + ' z=' + key[4]   //数据库命令                           
  dbpak.get(sqlstr, function (err, row) { //select * from blocks where x=404 and  y=217 and  z=9
    // console.log(objkey)
    if (err === null) {                                    //如果返回不为空
      if (row !== undefined) {                             //如果返回不为undefined，则设置Access-Control-Allow-Headers: 和Content-Type: 
        res.set('Content-Type', 'image/png');
        res.status(200).send(row.tile)                     //返回tiles的内容
      } else {                                             //如果返回undefined
        res.set('Content-Type', 'image/png');
        res.status(404).send('文件没有找到!');              //返回404
      }
    } else {                                               //如果报错，则404
      res.set('Content-Type', 'image/png');
      res.status(404).send('文件没有找到');
    }
  })
});

module.exports = router;
